package cn.jolyoulu.cmnservice.entity.po;

import cn.jolyoulu.common.web.security.entity.ILoginUser;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;
import cn.jolyoulu.cmnservice.utils.HoldUserUtils;

import java.time.LocalDateTime;


/**
 * 用户表
 */
@Data
@ToString(callSuper = true)
@Accessors(chain = true)
@TableName(value = "sys_user")
public class SysUser implements ILoginUser {

	/** 用户id */
	@TableId(type = IdType.ASSIGN_UUID)
    private String id;

	/** 登录账号 */
    private String account;


	/** 创建者 */
    private String createBy;


	/** 创建时间 */
    private LocalDateTime createTime;


	/** 状态（1正常 0删除） */
    private Integer delFlag;


	/** 电子邮箱 */
    private String email;


	/** 头像路径 */
    private String headimgUrl;


	/** 最后登陆时间 */
    private LocalDateTime lastLoginDate;


	/** 最后登陆IP */
    private String lastLoginIp;


	/** 状态(1：正常  2：冻结 ） */
    private Integer status;


	/** 用户昵称 */
    private String nickname;


	/** 登录密码 */
    private String password;


	/** md5加密盐 */
    private String salt;


	/** 手机号码 */
    private String phone;


	/** 备注信息 */
    private String remarks;


	/** 用户性别 */
    private Integer sex;


	/** 更新者 */
    private String updateBy;


	/** 更新时间 */
    private LocalDateTime updateTime;

    public SysUser fillUpdate(){
        this.updateBy = HoldUserUtils.get().getUserId();
        this.updateTime = LocalDateTime.now();
        return this;
    }

    public SysUser fillCreat(){
        this.createBy = HoldUserUtils.get().getUserId();
        this.createTime = LocalDateTime.now();
        return this;
    }

    @Override
    public String userId() {
        return this.id;
    }

    @Override
    public String userName() {
        return this.nickname;
    }

    @Override
    public boolean isAdmin() {
        return false;
    }
}